#include "project/initialization.h"

void
interactKeyboard(unsigned char key, int x, int y)
{
	switch(key)
	{
		// Finaliza a execucao do programa 
		case 27:
			printf("%s: Sinal de saida detectado!\n", window_title);
			exit(0);
			break;

		// Ativa o modelo 1
		case '1':
			setActiveModel(1);
			
			// DEBUG
			printf("%s: Desenhando modelo: \"%s\"...\n", window_title, active_ply->scene_name);
			break;

		// Reduz o fator de ampliacao sobre o objeto
		case '-':
			if( zoom ) 
			{				
				zoom -= 1;

				// DEBUG
				printf("%s: Alterando fator de zoom para: %dx\n", window_title, zoom);

			} else {
				// DEBUG
				printf("%s: 0x e o fator de zoom minimo!\n", window_title);
			}
			break;

		// Aumenta o fator de ampliacao sobre o objeto
		case '+': 
			zoom += 1;

			// DEBUG
			printf("%s: Alterando fator de zoom para: %dx\n", window_title, zoom);
			break;

		default:
			printf("%s: Interacao nao implementada!\n", window_title);
			break;
	}
	glutPostRedisplay();
}

void
interactMouse(int button, int state, int x, int y)
{
	// Muda a cor do modelo para vermelho
	if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
	{
		// DEBUG
		printf("%s: Cor ativada: Vermelho\n", window_title);

	}

	// Muda a cor do modelo para verde
	if (button == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN)
	{
		// DEBUG 
		printf("%s: Cor ativada: Verde\n", window_title);
		
	}

	// Muda a cor do modelo para azul
	if (button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN)
	{
		// DEBUG
		printf("%s: Cor ativada: Azul\n", window_title);
		
	}

	// Configura FLAG interna ao OpenGL requisitando reexecucao da CALLBACK display
	glutPostRedisplay();			
}
